package com.fly.system.controller;

import com.fly.common.model.ZtreeModel;
import com.fly.common.msg.ResultMsg;
import com.fly.system.model.SysMenuModel;
import com.fly.system.service.DictKeyService;
import com.fly.system.service.DictValueService;
import com.fly.system.service.SysMenuService;
import org.apache.shiro.authz.annotation.RequiresPermissions;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.*;

import java.util.List;

/**
 * @CLASSNAME: SysMenuController
 * @author: Fly
 * 日期: 2020/6/13  17:26
 * 描述:菜单
 **/
@Controller
@RequestMapping("/dict")
public class SysDictController {

    @Autowired
    private SysMenuService sysMenuService;

    @Autowired
    private DictKeyService dictKeyService;

    @Autowired
    private DictValueService dictValueService;

    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @RequestMapping("/index")
    @RequiresPermissions("sys:dict:view")
    public String toList(Model model){
        model.addAttribute("keys",dictKeyService.finalAll());
        model.addAttribute("values",dictValueService.finalAll());
        return "/system/dict/dict_list";
    }

    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @RequestMapping("/add")
    @RequiresPermissions("sys:menu:add")
    public String add(){
        return "/system/menu/add";
    }

    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @GetMapping("/menuTree/{parentId}")
    public String menuTree(@PathVariable("parentId") Long parentId,Model model){
        model.addAttribute("parentId",parentId);
        return "/system/menu/menu_tree";
    }


    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @GetMapping("/menuTreeData")
    @ResponseBody
    public List<ZtreeModel> menuTreeData(){
        List<ZtreeModel> list = sysMenuService.findMenuTree();
        return list;
    }

    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @PostMapping("/add/save")
    @ResponseBody
    public ResultMsg addSave(SysMenuModel model){
        int i = sysMenuService.addSave(model);
        if(i > 0){
            return ResultMsg.success();
        } else {
            return ResultMsg.error();
        }
    }

    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @RequestMapping("/findPage")
    @ResponseBody
    public List<SysMenuModel> findPage(SysMenuModel model){
        return sysMenuService.findPage(model);
    }

    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @RequestMapping("/edit/{id}")
    @RequiresPermissions("sys:menu:edit")
    public String edit(@PathVariable Long id, Model m){
        SysMenuModel menu = sysMenuService.findMenuModelById(id);
        m.addAttribute("menu",menu);
        return "/system/menu/edit";
    }

    @RequestMapping("/edit/save")
    @ResponseBody
    public ResultMsg editSave(SysMenuModel model){
        int i = sysMenuService.editModelById(model);
        if(i > 0){
            return ResultMsg.success();
        } else {
            return ResultMsg.error();
        }
    }

    /* * 
     *@author Fuly
     * 
     * 日期：2020/7/18 11:56
     * 
     * 描述：
     *
     */
    @RequestMapping("/remove")
    @ResponseBody
    @RequiresPermissions("sys:menu:remove")
    public ResultMsg remove(SysMenuModel model){
        int i = sysMenuService.deleteModel(model);
        if(i > 0){
            return ResultMsg.success();
        } else {
            return ResultMsg.error();
        }
    }
}
